﻿using DevExpress.XtraTreeList;
using DevExpress.XtraTreeList.Nodes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DevUIUtils
{
    public static class XtraTreeListEx
    {
        /// <summary>
        /// 载入Node选中事件。
        /// 1.选中任意子节点，主节点将被选中。
        /// 2.取消选中所有子节点，主节点将被取消选中。
        /// 3.选中主节点，所有子节点将被选中。
        /// 4.取消选中主节点，所有子节点将被取消选中。
        /// </summary>
        /// <param name="treeList"></param>
        public static void LoadEvent_AfterCheckNode01(this TreeList treeList)
        {
            treeList.AfterCheckNode += (s, e) =>
            {
                if (e.Node.ParentNode != null)
                {
                    if (e.Node.ParentNode.Nodes.Count(t => t.Checked) == 0)
                    {
                        e.Node.ParentNode.Checked = false;
                    }
                    else
                    {
                        e.Node.ParentNode.Checked = true;
                    }
                }
                foreach (TreeListNode subNode in e.Node.Nodes)
                {
                    subNode.Checked = e.Node.Checked;
                }
            };
        }
    }
}
